export {};

// 把这3个函数定义抽离一下？
const echo1 = (value: number): number => {
  return value;
};
const echo2 = (value: string): string => {
  return value;
};
const echo3 = (value: boolean): boolean => {
  return value;
};

// 定义一个 echo 泛型函数

// 1 函数定义形式
// function echo <Type> (value: Type) :Type {
//   return value
// }

// 2 箭头函数
const echo = <Type>(value: Type): Type => {
  // console.log(value.length)
  return value;
};

// 泛型函数的调用
echo<number>(10);
echo<string>('10');
echo<boolean>(true);

let age: number = 10;
age = echo<number>(10); // 可以
// age = echo<string>('10'); // 错误

// 简化泛型函数调用，利用 TS 推导机制

let result1 = echo(10);
let result2 = echo('10');
let result3 = echo(true);
